home *** CD-ROM | disk | FTP | other *** search
/ QRZ! Ham Radio 8 / QRZ Ham Radio Callsign Database - Volume 8.iso / pc / files / t_unix / j109lxa4.tar / calldbd.c < prev    next >
C/C++ Source or Header  |  1994-06-04  |  2KB  |  120 lines

  1. /* Callbook server */
  2. #include <stdio.h>
  3. #include <string.h>
  4. #include "global.h"
  5. #include "files.h"
  6. #include "mbuf.h"
  7. #include "socket.h"
  8. #include "session.h"
  9. #include "proc.h"
  10. #include "dirutil.h"
  11. #include "commands.h"
  12. #include "mailbox.h"
  13. #include "config.h"
  14.  
  15. extern char *Callserver;  /* buckbook.c */
  16.  
  17. static int Scallbook = -1;  /* Prototype socket for service */
  18.  
  19. static void calldbd __ARGS((int s,void *unused,void *p));
  20.  
  21. int cb_lookup(int s,char *call);  /* in buckbook.c  */
  22.  
  23.  
  24. /* Start up callsign database service */
  25. int
  26. cdbstart(argc,argv,p)
  27. int argc;
  28. char *argv[];
  29. void *p;
  30. {
  31.     struct sockaddr_in lsocket;
  32.     int s;
  33.  
  34.     if(Scallbook != -1){
  35.         return 0;
  36.     }
  37.   psignal(Curproc,0); /* Don't keep the parser waiting */
  38.     chname(Curproc,"Callbook listener");
  39.  
  40.     lsocket.sin_family = AF_INET;
  41.     lsocket.sin_addr.s_addr = INADDR_ANY;
  42.     if(argc < 2)
  43.         lsocket.sin_port = IPPORT_CALLDB;
  44.     else
  45.         lsocket.sin_port = atoi(argv[1]);
  46.  
  47.     Scallbook = socket(AF_INET,SOCK_STREAM,0);
  48.     bind(Scallbook,(char *)&lsocket,sizeof(lsocket));
  49.     listen(Scallbook,1);
  50.     for(;;){
  51.         if((s = accept(Scallbook,NULLCHAR,(int *)NULL)) == -1)
  52.             break;    /* Service is shutting down */
  53.  
  54.         /* Spawn a server */
  55.         newproc("calldbd",1024,calldbd,s,NULL,NULL,0);
  56.     }
  57.     return 0;
  58. }
  59. static void
  60. calldbd(s,unused,p)
  61. int s;
  62. void *unused;
  63. void *p;
  64. {
  65.     char user[80];
  66.  
  67.     sockmode(s,SOCK_ASCII);
  68.     sockowner(s,Curproc);
  69.     recvline(s,user,80);
  70.     rip(user);
  71.   log(s,"Callbook lookup: %s",user);
  72.   if(strlen(user) == 0)
  73.     {
  74.             usprintf(s,"No Callbook information available\n");
  75.     }
  76.     else 
  77.     {
  78.         cb_lookup(s,user);
  79.     }
  80.     close_s(s);
  81. /*   log(s,"close Callbook"); */
  82. }
  83. int
  84. cdb0(argc,argv,p)
  85. int argc;
  86. char *argv[];
  87. void *p;
  88. {
  89.     close_s(Scallbook);
  90.     Scallbook = -1;
  91.     return 0;
  92. }
  93. /* This routine has been expanded upon, and is now located in buckbook.c
  94.   - kb7yw Mon  01-27-1992
  95.  
  96. int
  97. docallserver(argc,argv,p)
  98. int argc;
  99. char *argv[];
  100. void *p;
  101. {
  102.     if(argc < 2)
  103.     {
  104.         if(Callserver != NULLCHAR)
  105.       tprintf("The callserver's host name is: %s\n",Callserver);
  106.         else
  107.         {
  108.             tprintf("Callserver not configured!\n");
  109.             tprintf("Usage: callserver hostname OR callserver ip_address\n");
  110.         }
  111.     }
  112.     else {
  113.         if(Callserver != NULLCHAR)
  114.             free(Callserver);
  115.         Callserver = strdup(argv[1]);
  116.     }
  117.     return 0;
  118. }
  119. */
  120.